﻿using RndMaterialDisposalService.Models.ResponseModel;

namespace RndMaterialDisposalService.Models.RequestModel
{
    /// <summary>
    /// 
    /// </summary>
    public class CapitalTransferElectronFlowReq
    {

        /// <summary>
        /// 是否为电脑或软件转移
        /// </summary>
        public bool? ComputerOrSoftware { get; set; }
        /// <summary>
        /// 公司段
        /// </summary>
        public string? CompanyType { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public ItemOptions? CompanyTypeItem { get; set; }
        /// <summary>
        /// FormHeader
        /// </summary>
        public FormHeader FormHeader { get; set; } = new FormHeader();
        /// <summary>
        /// 转出部门
        /// </summary>
        public OutDeptModel OutDept { get; set; } = new OutDeptModel();
        /// <summary>
        /// 转入部门
        /// </summary>
        public InputDeptModel InputDept { get; set; } = new InputDeptModel();
        /// <summary>
        /// 资产明细
        /// </summary>
        public List<ERPAssetInfoModel> AssetDetail { get; set; } = new List<ERPAssetInfoModel>();
        /// <summary>
        /// 资产转移原因
        /// </summary>
        public string? CapitalTransferRemark { get; set; }
        /// <summary>
        /// 上传附件
        /// </summary>
        public List<Attachment> UploadFiles { get; set; } = new List<Attachment>();
    }

    /// <summary>
    /// 转出部门
    /// </summary>
    public class OutDeptModel
    {
        /// <summary>
        /// 使用人ID
        /// </summary>
        public string? UserID { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public UserSelectResp? UserIDItem { get; set; }
        /// <summary>
        /// 部门名称(大部门)
        /// </summary>
        public string? DeptName { get; set; }
        /// <summary>
        /// 部门编码
        /// </summary>
        public string? DeptCode { get; set; }
        /// <summary>
        /// 部门名称(小部门)
        /// </summary>
        public string? DeptName2 { get; set; }
        /// <summary>
        /// 转移原因
        /// 1 离职转移
        /// 2 非离职转移
        /// </summary>
        public int? LeaveTransfer { get; set; }
        /// <summary>
        /// PC数据清理确认
        /// </summary>
        public string? PCDataClear { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public ItemOptions? PCDataClearItem { get; set; }
        /// <summary>
        /// 转出部门一级资产管理员
        /// </summary>
        public string? FirstAdmin { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public DictItemReq? FirstAdminItem { get; set; }
        /// <summary>
        /// 转出部门主管
        /// </summary>
        public string? Manager { get; set; }
        /// <summary>
        /// 转出资产所缺配件
        /// </summary>
        public string? Sparepart { get; set; }
    }

    /// <summary>
    /// 转入部门
    /// </summary>
    public class InputDeptModel
    {
        /// <summary>
        /// 使用人ID
        /// </summary>
        public string? UserID { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public UserSelectResp? UserIDItem { get; set; }
        /// <summary>
        /// 部门名称(大部门)
        /// </summary>
        public string? DeptName { get; set; }
        /// <summary>
        /// 部门编码
        /// </summary>
        public string? DeptCode { get; set; }
        /// <summary>
        /// 部门名称(小部门)
        /// </summary>
        public string? DeptName2 { get; set; }
        /// <summary>
        /// 转入部门一级资产管理员
        /// </summary>
        public string? FirstAdmin { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public DictItemReq? FirstAdminItem { get; set; }

    }

    /// <summary>
    /// 资产明细
    /// </summary>
    public class CapitalDetailModel
    {
        /// <summary>
        /// 资产编号
        /// </summary>
        public string? Identifier { get; set; }
        /// <summary>
        /// 资产名称
        /// </summary>
        public string? Name { get; set; }
        /// <summary>
        /// 使用人姓名
        /// </summary>
        public string? UseName { get; set; }
        /// <summary>
        /// 使用人工号
        /// </summary>
        public string? UseCode { get; set; }
        /// <summary>
        /// 部门名称
        /// </summary>
        public string? DeptName { get; set; }
        /// <summary>
        /// 部门代码
        /// </summary>
        public string? DeptCode { get; set; }
        /// <summary>
        /// 附属物品
        /// </summary>
        public string? AttachItem { get; set; }
        /// <summary>
        /// 存放位置
        /// </summary>
        public string? SavePosition { get; set; }
        /// <summary>
        /// 产品段
        /// </summary>
        public string? Product { get; set; }
    }

    /// <summary>
    /// 附件
    /// </summary>
    public class Attachment
    {
        /// <summary>
        /// 文件名
        /// </summary>
        public string? FileName { get; set; }
        /// <summary>
        /// 文件大小
        /// </summary>
        public string? FileSize { get; set; }
        /// <summary>
        /// 文件类型
        /// </summary>
        public string? FileType { get; set; }
        /// <summary>
        /// 上传时间
        /// </summary>
        public string? Date { get; set; }
        /// <summary>
        /// 上传节点
        /// </summary>
        public string? ActivityName { get; set; }
        /// <summary>
        /// 上传人
        /// </summary>
        public string? UserName { get; set; }
    }

    /// <summary>
    /// 审批历史
    /// </summary>
    public class ApprovalHistory
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        public string? Id { get; set; }
        /// <summary>
        /// 节点名
        /// </summary>
        public string? ActivityName { get; set; }
        /// <summary>
        /// 审批人
        /// </summary>
        public string? Approver { get; set; }
        /// <summary>
        /// 审批意见
        /// </summary>
        public string? Action { get; set; }
        /// <summary>
        /// 审批时间
        /// </summary>
        public DateTime Date { get; set; }
        /// <summary>
        /// 备注说明
        /// </summary>
        public string? Reamrk { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class FormHeader
    {
        /// <summary>
        /// 
        /// </summary>
        public string? Title { get; set; }
        /// <summary>
        /// 申请人ID
        /// </summary>
        public string? ApplicantID { get; set; }
        /// <summary>
        /// 申请人名称
        /// </summary>
        public string? ApplicantName { get; set; }
        /// <summary>
        /// Folio
        /// </summary>
        public string? ProcFolio { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string? ProcFullName { get; set; }
        /// <summary>
        /// 当前节点
        /// </summary>
        public string? ActivityName { get; set; }
        /// <summary>
        /// 下一个节点 
        /// </summary>
        public string? NextActivityName { get; set; }
        /// <summary>
        /// 流程状态
        /// </summary>
        public string? ProcStatus { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string? ViewsStatus { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string? ProcInstId { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int? FormId { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string? Subject { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class ItemOptions
    {
        public string? Key { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string? Label { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string? Value { get; set; }
    }

    /// <summary>
    /// 查询条件
    /// </summary>
    public class CapitalTransferReportConditionModel
    {
        public string? ApplicationNumber { get; set; }
        public string? ApplicationTime { get; set; }
        public string? OutName { get; set; }
        public string? OutDeptName { get; set; }
        public string? InputName { get; set; }
        public string? InputDeptName { get; set; }
        public string? CurrentNode { get; set; }
        public string? CapitalNo { get; set; }
        public string? CurrentUser { get; set; }
        public int pageIndex { get; set; }
        public int pageSize { get; set; }
        public string? CompanySegment { get; set; }
        public string? FirstAdmin { get; set; }

    }
}
